// 1 写功能
// 2 写空函数
// 3 把1放到2中
// 4 形参返回值

interface OptionType {
  path: string
  header?: Object
  data?: Object
}

import { http } from '@kit.NetworkKit'

const baseURL = ''

// export const post = (option: OptionType) => {  //  Promise<any>
export const post = <T>(option: OptionType): Promise<T> => {

  const { path='', header={}, data={} } = option

  // 创建httpRequest实例  基于createHttp函数
  const httpRequest = http.createHttp()
  // 调用request方法
  const p = httpRequest.request(baseURL + path, {
    method: http.RequestMethod.POST,
    header: {
      // 默认的配置
      // token: AppStorage.get('token'),
      authorization: AppStorage.get('token'),
      // 自定义配置  如果也有token则自定义覆盖默认
      ...header,
    },
    extraData: data
  })
  // 通过.then获取服务器数据
  return p.then(res => {
    if (res.responseCode === 200) {
      const serverData = JSON.parse(res.result as string)
      return serverData
    }
  })
}

// const serverData = await post<ResultType<Userinfo>>({
//   path: '/sms/login',
//   data: this.formData
// })
// const serverData = await post<ResultType>({
//   path: '/sms/send',
//   data: {
//     mobile: this.mobile,
//     type: this.type
//   }
// })
// const serverData = await post<ResultType>({
//   path: '/sms/registry',
//   data: this.formData
// })